﻿--1.为赵云此人进行开户开卡操作，赵云身份证：420107199904054233
declare @name varchar(20),@id varchar(20)
set @name = '赵云'
set @id = '420107199904054233'
insert into AccountInfo values(@id,'13554785426',@name,'2022-09-19 19:20:00')
go

--2.需要求出张飞的银行卡卡号和余额，张飞身份证：420107199602034138  （1.使用连接查询，2.使用变量）
declare @id varchar(20)
set @id = '420107199602034138'
select b.CardNo 卡号,b.CardMoney 余额 from BankCard b
inner join AccountInfo a
on a.AccountId = b.AccountId
where a.AccountCode = @id
go

--	3.某用户银行卡号为“6225547854125656”，该用户执行取钱操作，取钱5000元，余额充足则进行取钱操作，并提示"取钱成功"，否则提示“余额不足”。
declare @money int , @getMoney int
select @money = (select CardMoney  from BankCard where CardNo = '6225547854125656')
set @getMoney = 5000
if(@money-@getMoney >= 0)
begin
 print '取钱成功'
end 
else
begin
print '余额不足'
end
go

​--4.查询银行卡信息，将银行卡状态1,2,3,4分别转换为汉字“正常,挂失,冻结,注销”，
--并且根据银行卡余额显示银行卡等级 30万以下为“普通用户”,30万及以上为"VIP用户"，  
--显示列分别为卡号，身份证，姓名，余额，用户等级，银行卡状态。
select t.CardNo 卡号,a.AccountCode 身份证,a.RealName 姓名,t.CardMoney 余额, 
case 
when t.CardMoney < 300000 then '普通用户'
when t.CardMoney >= 300000 then 'VIP用户'
end 登记
from AccountInfo a
inner join
(
select * ,
case
when b.CardState = 1  then  '正常'
when b.CardState = 2  then  '挂失'
when b.CardState = 3  then  '冻结'
when b.CardState = 4  then  '注销'
end 状态
from BankCard b
) t
on a.AccountId = t.AccountId
go

--	5.循环打印1-10。
declare @i int
set @i = 1

while (@i<=10)
begin
	 print @i
	 set @i = @i +1
end
go

--	6.打印99乘法表
 declare @i int = 1
while @i <= 9
	begin
		declare @j int = 1
		declare @result varchar(200) = ''
		while  @j <= @i
			begin
				set @result = @result + cast(@i as varchar(1))+ ' * ' + cast(@j as varchar(1)) + ' = '+ cast(@i*@j as varchar(2)) + char(9)
				set @j = @j + 1
			end
		print @result
		set @i = @i + 1
	end
